import { exportFileType } from "@/utils/status.js";
import {ElMessage} from 'element-plus'
/*
 * 拷贝
 * @param {Object} source
 * @returns {Object}
 */
export const deepClone = (source) => {
  return JSON.parse(JSON.stringify(source));
};
// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
export const currentTime = (fmt = "yyyy-MM-dd hh:mm:ss") => {
  let date = new Date();
  var o = {
    "M+": date.getMonth() + 1, // 月份
    "d+": date.getDate(), // 日
    "h+": date.getHours(), // 小时
    "m+": date.getMinutes(), // 分
    "s+": date.getSeconds(), // 秒
    "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
    S: date.getMilliseconds(), // 毫秒
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
  return fmt;
};
// 千分位
export const thousands = (num, len = 2) => {
  try {
    if (!num) return "0.00";
    return `${(num * 1).toFixed(len)}`.replace(
      /\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,
      "$&,"
    );
  } catch (error) {
    return "0.00";
  }
};
/**
 * 千分位转数字
 * @param {*} num
 * @returns
 */
export const translateNumber = (num) => {
  try {
    if (num) {
      const val = num.replace(/,/g, "");
      return val * 1;
    }
    return "";
  } catch (error) {
    return num;
  }
};

/**
 * 判断类型集合
 * @param {*} str 号码
 * @param {*} type 类型
 * @returns
 */
export const checkStr = (str, type) => {
  switch (type) {
    case "mobile": // 手机号码
      return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
    case "tel": // 座机
      return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
    case "card": // 身份证
      return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
    case "mobileCode": // 6位数字验证码
      return /^[0-9]{6}$/.test(str);
    case "pwd": // 密码以字母开头，长度在6~18之间，只能包含字母、数字和下划线
      return /^([a-zA-Z0-9_]){6,18}$/.test(str);
    case "payPwd": // 支付密码 6位纯数字
      return /^[0-9]{6}$/.test(str);
    case "postal": // 邮政编码
      return /[1-9]\d{5}(?!\d)/.test(str);
    case "QQ": // QQ号
      return /^[1-9][0-9]{4,9}$/.test(str);
    case "email": // 邮箱
      return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
    case "money": // 金额(小数点2位)
      return /^\d*(?:\.\d{0,2})?$/.test(str);
    case "URL": // 网址
      return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(
        str
      );
    case "IP": // IP
      return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(
        str
      );
    case "date": // 日期时间
      return (
        /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(
          str
        ) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
      );
    case "number": // 数字
      return /^[0-9]$/.test(str);
    case "english": // 英文
      return /^[a-zA-Z]+$/.test(str);
    case "chinese": // 中文
      return /^[\\u4E00-\\u9FA5]+$/.test(str);
    case "lower": // 小写
      return /^[a-z]+$/.test(str);
    case "upper": // 大写
      return /^[A-Z]+$/.test(str);
    case "HTML": // HTML标记
      return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
    default:
      return true;
  }
};
/**
 * 业务中处理出口信息中的文件
 * @param {*} id //出口ID
 * @param {*} filterIds  // 过滤掉的的type  0-船运单,1-装箱照片,2-报关单,3-海运提单,4-箱单
 * @param {*} value // 文件数据
 */
export const getExportFiles = (value, id, filterIds = []) => {
  if (value.length <= 0) return [];
  const data = value.filter((x) => {
    return x.innerNo === id;
  });
  const list = deepClone(exportFileType);
  for (let i = 0; i < data.length; i++) {
    for (let j = 0; j < list.length; j++) {
      if (data[i].type === list[j].value && !filterIds.includes(data[i].type)) {
        list[j].list.push(data[i].fileUrl);
      }
    }
  }
  return list.filter((x) => {
    return x.list.length > 0;
  });
};

/**
 * 打开文件
 * @param {string} file 文件路径
 */
export const onFileOpen = (file) => {
  if (!file) {
    ElMessage.warning('未找到文件')
    return;
  }
  let list = [];
  if (file instanceof Array) {
    list = file;
  } else if (typeof file === "string") {
    list = file.split(",");
  }
  for (let i = 0; i < list.length; i++) {
    window.open(list[i]);
  }
};
